from django.db import models
from django.contrib.auth.models import User

class GrupoUsuarios(models.Model):
    nombre = models.CharField(max_length=30, null=False, blank=False)
    descripcion = models.TextField(null=False, blank=False)

    def __unicode__(self):
        return '%s' % (self.nombre)


class Usuario(models.Model):
    user = models.ForeignKey(User)
    nombre = models.CharField(max_length=50, null=False, blank=False)
    apellido = models.CharField(max_length=50, null=False, blank=False)
    nacimiento = models.DateField(null=True, blank=True)
    grupo = models.ForeignKey(GrupoUsuarios)
    
    def __unicode__(self):
        return '%s %s' % (self.nombre, self.apellido)
    

class Recurso(models.Model):
    nombre = models.CharField(max_length=50, null=False, blank=False)
    descripcion = models.TextField(null=False, blank=False)

    def __unicode__(self):
        return '%s' % (self.nombre)

    
class Permiso(models.Model):
    nombre = models.CharField(max_length=20, null=False, blank=False) 
    descripcion = models.TextField(null=False, blank=False)
    
    def __unicode__(self):
        return '%s' % (self.nombre)


class GPR (models.Model):
    grupo_usuarios = models.ForeignKey(GrupoUsuarios)
    permiso = models.ForeignKey(Permiso)
    recurso = models.ForeignKey(Recurso)
    
    def __unicode__(self):
        return 'El grupo %s tiene permiso de %s sobre el recurso %s' % (self.grupo_usuarios.nombre, self.permiso.nombre, self.recurso.nombre)


class Accion(models.Model):
    nombre = models.CharField(max_length=20, null=False, blank=False)
    detalle = models.TextField(null=False, blank=False)
    
    def __unicode__(self):
        return "%s" % (self.nombre)

class AccionRealizada(models.Model):
    usuario = models.ForeignKey(Usuario)
    accion = models.ForeignKey(Accion)
    fecha = models.DateTimeField(null=False, blank=False)
    dato1 = models.IntegerField(null=True, blank=True, default=0)
    dato2 = models.IntegerField(null=True, blank=True, default=0)

    def __unicode__(self):
        return "%s - %s" % (self.usuario.nombre, self.accion.nombre)

